---
title: "JavaScript → Go"
description: "從 JavaScript 開發者視角學習 Go 程式語言，重點掌握並發程式設計、系統程式設計和雲原生開發"
---

## 為什麼學習 Go？

Go (Golang) 是一門專為簡潔性、高效性和並發性設計的現代程式語言。作為 JavaScript 開發者，學習 Go 將擴展你在以下領域的能力：

- **並發程式設計**：掌握 Goroutines 和 Channels 編寫高效的並發程式碼
- **系統程式設計**：構建高性能的系統級應用程式
- **微服務**：創建可擴展的微服務架構
- **雲原生開發**：在現代雲環境中部署應用程式
- **效能優化**：在垃圾回收的基礎上實現接近 C 語言的效能

## 你將學到什麼

### 核心概念
- Go 語法和類型系統與 JavaScript 的對比
- 套件管理和模組系統
- 介面和類型斷言
- 錯誤處理模式

### 並發與效能
- Goroutines vs JavaScript async/await
- Channel 通訊模式
- Select 語句的非阻塞操作
- 效能優化技術

### Web 開發
- HTTP 伺服器開發
- RESTful API 設計
- GraphQL 服務
- WebSocket 實現

### 現代 Go 特性
- 泛型（Go 1.18+）
- 多模組專案的工作區
- 模糊測試
- 效能分析

## 學習路徑

學習路徑分為 **14 個漸進式模組**：

1. **Go 語言介紹**：理解 Go 的設計哲學並與 JavaScript 進行對比
2. **語法對比**：將 JavaScript 概念映射到 Go 語法和模式
3. **套件管理系統**：理解 Go 模組和套件管理
4. **類型與介面**：掌握 Go 的類型系統和介面模式
5. **並發與 Goroutines**：學習使用 Goroutines 進行並發程式設計
6. **Channels 與 Select**：掌握 Channel 通訊和 Select 語句
7. **錯誤處理**：理解 Go 的錯誤處理哲學
8. **Web 開發**：使用 Go 構建 Web 服務和 API
9. **微服務**：開發微服務架構
10. **雲原生開發**：在雲環境中部署應用程式
11. **測試與除錯**：編寫測試和除錯 Go 應用程式
12. **實戰專案**：應用所學知識的真實專案
13. **常見陷阱**：避免 Go 開發中的常見錯誤
14. **Go 慣用法**：編寫慣用且高性能的 Go 程式碼

## 快速開始

讓我們從 JavaScript 和 Go 的簡單對比開始：

<UniversalEditor title="Hello World 對比" compare={true}>
```javascript !! js
// JavaScript
function greet(name) {
    return `Hello, ${name}!`;
}

console.log(greet("World"));
```

```go !! go
// Go
package main

import "fmt"

func greet(name string) string {
    return fmt.Sprintf("Hello, %s!", name)
}

func main() {
    fmt.Println(greet("World"))
}
```
</UniversalEditor>

## 主要差異

| 方面 | JavaScript | Go |
|------|------------|----|
| **類型系統** | 動態類型 | 靜態類型 |
| **並發模型** | 事件迴圈，async/await | Goroutines，channels |
| **記憶體管理** | 垃圾回收 | 垃圾回收 |
| **編譯方式** | JIT 編譯 | 提前編譯 |
| **執行時** | V8 引擎 | Go 執行時 |
| **套件管理** | npm/yarn | go mod |

## 準備開始？

通過我們全面的學習路徑開始從 JavaScript 到 Go 的旅程。每個模組都包含互動式程式碼範例、效能對比和真實專案。

[開始學習 →](./js2go/module-00-go-introduction) 